我正在做一个小项目,但我不能让序列化器工作。
我已经试过了,我不知道我做错了什么。我的模型对很多人来说都是
class User(AbstractUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
phone = models.CharField(max_length=50, unique=True)
identity_number = models.CharField(max_length=50, unique=True)
address = models.CharField(max_length=200)
city = models.CharField(max_length=200)
post_code = models.CharField(max_length=7, null=True)
visited = models.ManyToManyField(
Company,
through="CompanyUser",
through_fields=(
"user",
"company",
),
)
is_visitor = models.BooleanField("visitor status", default=False)
is_company = models.BooleanField("company status", default=False)
class CompanyUser(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
company = models.ForeignKey(
Company, on_delete=models.CASCADE, related_name="company_visitors"
)
user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="company_visited"
)
checked_in = models.DateTimeField(auto_now_add=False)
checked_out = models.DateTimeField(auto_now=False)#serializers.py
class CompanyVisitedSerializer(serializers.HyperlinkedModelSerializer):
company_id = serializers.ReadOnlyField(source="company.id")
company_address = serializers.ReadOnlyField(source="company.business_address")
company_name = serializers.ReadOnlyField(source="company.business_name")
company_address = serializers.ReadOnlyField(source="company.business_address")
checked_in = serializers.ReadOnlyField(source="user.checked_in")
checked_out = serializers.ReadOnlyField(source="user.checked_out")
class Meta:
model = CompanyUser
fields = (
"checked_in",
"checked_out",
"company_name",
"company_address",
"company_id",
)
class VisitorSerializer(serializers.ModelSerializer):
# visited = CompanySerializer(many=True)
visited = CompanyVisitedSerializer(
many=True,
)但是我得到了空的{}:
{
"address": "192 millie road",
"city": "singapore",
"phone": "2066980",
...
"visited": [
{}, //i want to populate this with { company: name_of_company, checkin, checkout}
{}
]
}我读过这些书:
发布于 2021-07-09 19:48:12
visited所指向的模型是Company,而不是CompanyUser。如果您想使用CompanyUser,关系是company_visited,因此:
class VisitorSerializer(serializers.ModelSerializer):
visited = CompanyVisitedSerializer(
source='company_visited',
many=True
)https://stackoverflow.com/questions/68321945
复制相似问题