django 模型 - 管理员可以将变量添加到表中吗?

Posted

技术标签:

【中文标题】django 模型 - 管理员可以将变量添加到表中吗?【英文标题】:django models - can admin add variables to a table? 【发布时间】:2013-03-12 23:19:09 【问题描述】:

我有一组人,我想为每个人关联一张卡片,其中包含个人信息和待办事项列表,此列表没有固定大小(可能有一个或多个字段),管理员负责填写此列表。

如何授予管理员权限以通过管理页面在这些卡片中添加额外字段(不是编码)?有可能还是我必须使用固定大小的列表?

class Admin(models.Model):
        first_name = models.CharField(max_length=50)
        last_name = models.CharField(max_length=50)
        birth_date = models.DateField(blank=True, null=True)
        address = models.CharField(max_length=100, blank=True, null=True)
        city = models.CharField(max_length=50, blank=True, null=True)
        phone_number = models.CharField(max_length=20, blank=True, null=True)
        email = models.EmailField(blank=True, null=True)

        def __unicode__(self):
            return u'%s %s' % (self.first_name, self.last_name)


class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birth_date = models.DateField(blank=True, null=True)
    address = models.CharField(max_length=100, blank=True, null=True)
    city = models.CharField(max_length=50, blank=True, null=True)
    phone_number = models.CharField(max_length=20, blank=True, null=True)
    email = models.EmailField(blank=True, null=True)
    admin = models.ForeignKey(Admin, blank=True, null=True)

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)


class Card(models.Model):
    id_number = models.IntegerField(default=0)
    person = models.OneToOneField(Person, primary_key=True)

    def __unicode__(self):
        return unicode(self.id_number)  



class Things_to_do(models.Model):
    name = models.CharField(max_length=50)
    repetitions = models.IntegerField(default=0, blank=True, null=True)
    series = models.IntegerField(default=0, blank=True, null=True)
    executions = models.IntegerField(default=0, blank=True, null=True)
    rest_time = models.IntegerField(default=0, blank=True, null=True)
    card = models.ForeignKey(Card, blank=True, null=True)

    def __unicode__(self):
        return unicode(self.name)

【问题讨论】:

我不明白...为什么Card 附加到Things_to_doPerson 附加到它。还有为什么AdminPerson 基本上是同一个型号?我觉得您的设计是这里的问题,而不是管理页面...如果您能更好地解释它,我可以尝试提供帮助。 每个人都有一张卡片,里面有管理员要做的事情列表。管理员必须能够创建新卡片、修改现有卡片并将它们与人员关联。每个人都可以登录并在视图中仅查看他/她自己的卡。你能推荐一个更好的设计吗?谢谢 【参考方案1】:

您可以尝试创建自定义 JSONField:http://djangosnippets.org/snippets/1478/

有了这样的东西,您将能够将所有字段存储为字典。 试试看这个:How to store a dictionary in a Django database model's field

【讨论】:

奇怪的是,在 django 管理端默认情况下没有办法做到这一点,嗯?这个时候可能还是用固定大小的list比较好,这个sn-ps好像没那么好用。

以上是关于django 模型 - 管理员可以将变量添加到表中吗?的主要内容,如果未能解决你的问题,请参考以下文章

将表单条目保存到变量并添加到表中

Django模型表单集显示数据库数据而不是空表单集

使用列作为函数的输入参数并将结果添加到表中

将新数据添加到表中的自动化过程

使用jquery将行添加到表中[重复]

如何在Django的同一个表中阻止外键的相同对象引用?