繁体   English   中英

如何在 mysql/django 中添加一个仅限一行的表?

[英]How do I add a table limited to only one row in mysql/django?

我正在为一个小项目使用 Django,我想制作一个只有一行的表格,以在其中添加项目的描述。 我只需要一行,仅此而已,因为它是整个站点的一个描述,我不希望用户能够添加多个描述。

我用以下代码解决了问题

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()

是的,可以这样做。 可以说您的模型是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()

希望这可以帮助。

2022 年 3 月更新:

最简单和最好的方法是使用“has_add_permission()”

“模型.py”

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=50)    

“管理员.py”

from django.contrib import admin
from .models import MyModel

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def has_add_permission(self, request): # Here
        return not MyModel.objects.exists()

您可以查看有关has_add_permission()的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM