我想用django-orm重设我所有帖子中的所有赞,不知道如何编写查询并将其应用于视图。另外,也许单独制作upvote模型比在Post中的一个字段更好。
class Post(models.Model):
author = models.ForeignKey(
User,
related_name='posts',
on_delete=models.SET_NULL,
null=True
)
title = models.CharField(max_length=100)
creation_date = models.DateTimeField(auto_now_add=True)
link = models.URLField()
upvotes = models.ManyToManyField(User, related_name='upvotes', blank=True)
我想重置我所有
Post
的所有投票>您可以这样做,例如:
Post.upvotes.through.objects.all().delete()
例如,您可以在data migration [Django-doc]中执行此操作。
这将清除多对多表中的记录。
另外,也许单独制作upvote模型比在Post中仅一个字段要好。
A
ManyToManyField
并不是真正的“字段”,它存储为模型。您可以定义through=…
model [Django-doc],例如使用:
:通常,最好直接使用through=…
注
from django.conf import settings
class Post(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
related_name='posts',
on_delete=models.SET_NULL,
null=True
)
title = models.CharField(max_length=100)
creation_date = models.DateTimeField(auto_now_add=True)
link = models.URLField()
upvotes = models.ManyToManyField(
settings.AUTH_USER_MODEL,
related_name='liked_posts',
editable=False,
through='Upvote'
)
class Upvote(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
post = models.ForeignKey(
'Post',
on_delete=models.CASCADE
)
来引用用户模型,而不是直接使用settings.AUTH_USER_MODEL
[Django-doc]。有关更多信息,请参见settings.AUTH_USER_MODEL
。