数据库中的所有模型都应该由用户进行过滤。我为所有模型创建了一个字段owner
,我从请求中获取了user
,并在创建模型时将其填入。
当我访问所有网址时,他们会被正确过滤,以及我在数据库中创建它们时。
但问题是当我使用html接口在数据库上插入模型时,所有相关项(与用户无关)都列在外键字段上。
我的观点
class TransactionList(generics.ListCreateAPIView):
serializer_class = TransactionSerializer
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
def get_queryset(self):
return Transaction.objects.filter(owner=self.request.user)
我的序列化
class TransactionSerializer(serializers.ModelSerializer):
class Meta:
model = Transaction
fields = ('id', 'date', 'description',
'value', 'account', 'envelope', 'bill',)
我的模特
class Transaction(models.Model):
date = models.DateField(auto_now=True)
description = models.CharField(max_length=100)
value = models.DecimalField(max_digits=10, decimal_places=2)
account = models.ForeignKey(Account, on_delete=models.DO_NOTHING)
envelope = models.ForeignKey(Envelope, on_delete=models.DO_NOTHING, null=True)
bill = models.ForeignKey(Bill, on_delete=models.DO_NOTHING, null=True)
owner = models.ForeignKey('auth.User', related_name='transactions')
例如,当我打开用于插入数据的页面时,使用这些项目时,所有其他帐户(也限制用户)也会出现在组合中。
如何过滤HTML表单的相关字段?
如何验证相关对象是否不是来自其他用户?