【问题标题】:How do I add a table limited to only one row in mysql/django?如何在 mysql/django 中添加仅限于一行的表?
【发布时间】:2016-05-09 00:56:10
【问题描述】:

我正在将 Django 用于一个小项目,我想制作一个包含一行的表格以在其中添加项目的描述。我只需要一行,因为它是整个网站的一个描述,我不希望用户能够添加多个描述。

【问题讨论】:

  • 您是否正在尝试实现类似于sites framework 的目标?
  • @JamieBull 不,不是!问了好多问题都答不上来!别再给我投票了!!!
  • 我已更改标题以反映问题。这可能就是您投反对票的原因。
  • 谢谢,但我已经解决了问题@JamieBull
  • 所以现在有同样问题的人更有可能找到答案(并在此过程中给你点赞)。

标签: python mysql django database


【解决方案1】:

是的,这可以做到。 假设您的模型是 MyDescModel。

class MyDescModel(models.Model):
    desc = models.CharField('description', max_length=100)

def has_add_permission(self):
    return not MyDescModel.objects.exists()

现在你可以调用它了

MyDescModel.has_add_permission() 

打电话之前

MyDescModel.save()

希望这会有所帮助。

【讨论】:

  • 覆盖 has_add_permission 仅适用于从 ModelAdmin 继承的模型,但在这种情况下仅使用模型
【解决方案2】:

我用下面的代码解决了这个问题

Class Aboutus(models.Model):
    ....

    def save(self):
        # count will have all of the objects from the Aboutus model
        count = Aboutus.objects.all().count()
        # this will check if the variable exist so we can update the existing ones
        save_permission = Aboutus.has_add_permission(self)

        # if there's more than two objects it will not save them in the database
        if count < 2:
            super(Aboutus, self).save()
        elif save_permission:
            super(Aboutus, self).save()

    def has_add_permission(self):
        return Aboutus.objects.filter(id=self.id).exists()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2020-01-21
    相关资源
    最近更新 更多