Django Rest Framework:如何使用列表

时间:2014-12-26 17:37:24

标签: python django django-models django-rest-framework

我有两个模型:FeedUser

User可以使用POST方法创建Feed。其他User可以查看此Feed,每次用户看到Feed时,Feed对象都应更新并将用户的ID保存在“seen_by_users”中。

class User(models.Model):
    registered = models.DateTimeField(auto_now_add=True)
    last_login = models.DateTimeField(auto_now=True)

class Feed(models.Model):
    owner = models.ForeignKey(User, blank=False, related_name='feed_owner')  # required
    feed_message = models.CharField(max_length=255, blank=False, default='')
    created = models.DateTimeField(auto_now_add=True, blank=False)  # required
    seen_by_users = models.ForeignKey(User, blank=True, null=True, related_name='seen_by_users')
我在序列化器中

class FeedSerializer(serializers.ModelSerializer):
    class Meta:
        model = Feed
        fields = ('id', 'owner', 'feed_message', 'created', 'seen_by_users')

    def create(self, validated_data):
        feed = Feed.objects.create(**validated_data)
        return feed

    def update(self, instance, validated_data):
        instance.seen_by_users = validated_data.get('seen_by_users', instance.seen_by_users)
        instance.save()
        return instance

目前,我只能将一个用户ID保存到seen_by_users,但是, 如何更改或编辑我的模型或序列化程序以将用户数组添加到seen_by_users。它应该在我更新Feed时起作用。

我正在使用Django 1.7.1和Django Rest Framework 3.0。

1 个答案:

答案 0 :(得分:0)

您可以为应用创建一些自定义中间件,当用户访问Feed的视图时,可以设置与用户ID的会话。然后您可以在视图中访问该ID并将其保存到数据库中;你可能需要数据库中的多对多关系;例如许多用户可以查看Feed,反之亦然 - Middleware info

每次用户查看Feed时,您都可以考虑创建一个Signal来更新数据库 - Signals info