从模型重置许多字段

问题描述 投票:1回答:1

我想用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)
django django-orm
1个回答
0
投票

我想重置我所有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
© www.soinside.com 2019 - 2024. All rights reserved.