始终为已登录用户筛选相关字段

时间:2016-11-01 04:02:07

标签: python django django-rest-framework

数据库中的所有模型都应该由用户进行过滤。我为所有模型创建了一个字段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表单的相关字段?

如何验证相关对象是否不是来自其他用户?

0 个答案:

没有答案