我有两个模型:Feed
和User
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。
答案 0 :(得分:0)
您可以为应用创建一些自定义中间件,当用户访问Feed的视图时,可以设置与用户ID的会话。然后您可以在视图中访问该ID并将其保存到数据库中;你可能需要数据库中的多对多关系;例如许多用户可以查看Feed,反之亦然 - Middleware info
每次用户查看Feed时,您都可以考虑创建一个Signal来更新数据库 - Signals info