【发布时间】:2018-11-29 08:38:35
【问题描述】:
我是 Django 和 DRF 的新手,对序列化有疑问。 我有模型:
class Commodity(models.Model):
shop = models.ForeignKey(Company, on_delete=models.PROTECT)
price = models.DecimalField(max_digits=10, decimal_places=2)
active = models.BooleanField(default=False)
class Clother(models.Model):
commodity = models.ForeignKey(Commodity, related_name='commodity', on_delete=models.CASCADE)
color = models.ManyToManyField(Color, related_name='color')
material = models.ManyToManyField(Material, related_name='material')
gender = models.CharField(max_length=2, choices=GENDER_CHOICES, default=UNISEX)
class Outwear(models.Model):
clother = models.ForeignKey(Clother, on_delete=models.CASCADE)
name = models.CharField(max_length=30, blank=True)
outwear_type = models.ForeignKey(OutwearType, on_delete=models.CASCADE)
size = models.ManyToManyField(ClotherSize)
所以我想制作一个这样的序列化器:
class OutwearSerializer(serializers.ModelSerializer):
commodity = CommoditySerializer(many=False, read_only=False)
clother = ClotherSerializer(many=False, read_only=False)
class Meta:
model = Outwear
fields = ('commodity', 'clother', 'name', 'outwear_type', 'size')
据我了解,只读字段允许我进一步添加或编辑 Outwear 对象,但我应该有 2 种类型的许可:
- 所有用户只能看到活动的 Commodity 对象。
- 只有公司可以创建和编辑自己的对象。
我需要为read_only=True/False 制作 2 个串行器模型吗?
最佳做法是什么?我在哪里可以找到熟悉的东西的好例子?
我打电话给用户 - 未经授权的用户。公司是授权用户。
谢谢!
【问题讨论】:
-
你能解释一下用户角色吗?公司和用户是不同的模型吗??
-
@MohammadAli 已编辑。
标签: django serialization django-rest-framework django-serializer