【问题标题】:Django add new field on model if new object is created from another model如果从另一个模型创建新对象,Django 在模型上添加新字段
【发布时间】:2018-12-10 14:04:39
【问题描述】:

我有两个模型:

class Exam(models.Model):
    name = models.CharField(max_length=100,default="test")
    user = models.ForeignKey(User)

class UserScore(models.Model):
    user = models.OneToOneField(User,primary_key=True,on_delete=models.CASCADE)
    resultat = models.IntegerField(default=0)

当我动态创建新考试时,我希望在我的用户评分模型上为所有用户创建一个新字段。

【问题讨论】:

  • 既然每个User的考试都是独一无二的,那为什么不在同一个模型中得分呢?

标签: mysql django django-models django-mysql


【解决方案1】:

您可以为此使用 Django 信号 例如。

from django.db.models.signals import post_save
def create_userscore(sender, instance, **kwargs):
    if created:
        UserScore.objects.create()
post_save.connect(create_userscore(), sender=Exam)

这将在每次创建考试对象时创建一个 UserScore 对象

【讨论】:

  • 此方法将在考试类或用户分数类中实现?
  • 因为你必须传递用户的实例
  • 感谢您的帮助,我不想每次创建考试时都创建所有用户评分对象,我只想创建一个新字段示例:新考试 = 新结果
  • 我实际上没有得到你的问题,但据我了解你的问题,你可以将结果字段添加到考试模型。
  • 谢谢你,只是为了更清楚,我需要的是当我在我的网站的管理页面上时,当我为所有用户创建新考试时,我需要自动创建新的结果字段我的用户评分表这是我的目的,例如:新考试 1 = 新结果 1 新考试 2 = 新结果 2 等等......
猜你喜欢
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多