Tôi có một phụ huynh và một mô hình con có liên quan một-một và tôi muốn hiển thị các trường từ căn hộ con trong biểu diễn gốc (read only
). Hiện nay, tôi đã đạt được điều đó với một triển khai thực hiện to_representation
tùy chỉnh nhưng điều đó dường như rất có liên quan và tôi tự hỏi nếu không có cách nào dễ dàng hơn để đạt được điều này.Khung còn lại Django đại diện cho đối tượng lồng nhau được làm phẳng
Điều này trở nên phức tạp hơn do thực tế là mô hình liên quan của tôi được kết nối thông qua thuộc tính.
Vì vậy, đây là ví dụ cụ thể: Theo mặc định một đối tượng có liên quan sẽ được trả lại như:
{
parent_name:'Bob',
child:{
name:'Alice'
}
}
Đây là những gì tôi muốn và hiện đang nhận được với to_representation
tôi:
{
parent_name:'Bob',
child_name:'Alice'
}
Mô hình của tôi trông giống như sau:
class ChildModel(models.Model):
name = models.CharField(max_length=100, null=True)
class ParentModel(models.Model):
name = models.CharField(max_length=100, null=True)
_child = models.ForeignKey('ChildModel', null=True)
@property
def child(self):
return self._most_recent_status
@name.setter
def child(self, value):
self._child = value
Đây là serializers của tôi:
class FlatChildField(serializers.RelatedField):
def to_representation(self, value):
return value.name
class FlatParentSerializer(serializers.ModelSerializer):
parent_name = serializers.CharField(source='name', read_only=True)
child_name = FlatChildField(source='_child', read_only=True)
class Meta:
model = Parent
fields = ('name', 'child_name')
Để có giải pháp đơn giản hơn để có được đại diện phẳng của các mô hình liên quan, tôi sẽ biết ơn.
Để hoàn thành, tôi muốn nghe nếu có giải pháp đơn giản hơn cho các mô hình có liên quan "bình thường" (ví dụ: không phải là trường mô hình thuộc tính). Tôi đã tìm kiếm tương đương với cú pháp truy vấn mô hình django của related_model__field
, nhưng tôi không thể tìm thấy điều đó. Điều đó tồn tại đối với khung thời gian còn lại của django?
Rất cám ơn
Điều này hoạt động rất nhiều, cảm ơn. –
Điều này cũng hoạt động mà không có read_only, đó là tuyệt vời cho làm phẳng các mô hình lồng nhau! – alekwisnia