Questions tagged «django-models»

对于有关使用Web框架Django中的模型类的问题。

3
有没有一种方法可以在2个字段上创建唯一的ID?
这是我的模型: class GroupedModels(models.Model): other_model_one = models.ForeignKey('app.other_model') other_model_two = models.ForeignKey('app.other_model') 本质上,我想要的是other_model在此表中唯一。这意味着,如果存在other_model_oneid 为的记录,则123不应允许创建other_model_twoID为as的另一条记录123。我可以覆盖clean我的猜测,但是我想知道django是否内置了某些东西。 我在PSQL中使用版本2.2.5。 编辑:这不是一个不合时宜的情况。如果我用other_model_one_id=1和其他添加一条记录other_model_two_id=2,我应该不能用other_model_one_id=2和其他添加另一条记录。other_model_two_id=1

1
在Django中仅使用一个表“ django_migrations”使用多个数据库
对于Django中的项目,我必须使用两个数据库:default和remote。我创建了routers.py,一切正常。 要求在远程数据库上创建一个表,然后我创建了迁移,然后运行它并django_migrations创建了表。我想django_migrations在默认数据库中只有一个表。 相关部分在routers.py这里: class MyRouter(object): # ... def allow_migrate(self, db, app_label, model_name=None, **hints): if app_label == 'my_app': return db == 'remote' return None 我这样运行迁移: python manage.py migrate my_app --database=remote 现在,当我这样做时: python manage.py runserver 我收到以下警告: 您有1个未应用的迁移。在为应用程序my_app应用迁移之前,您的项目可能无法正常工作。 运行“ python manage.py migration”以应用它们。 my_app在remote数据库中创建的表,并在数据库django_migrations内部remote将迁移标记为已应用。 编辑: 如何强制Django只使用一个表django_migrations,但仍将迁移应用到不同的数据库? 如何将迁移应用到不同的数据库中,从而不会引发警告?

1
为什么要在Django models.Manager中定义create_foo()而不是覆盖create()?
阅读Django文档后,建议Foo通过create_foo在管理器中定义模型来为命名模型创建自定义创建方法: class BookManager(models.Manager): def create_book(self, title): book = self.create(title=title) # do something with the book return book class Book(models.Model): title = models.CharField(max_length=100) objects = BookManager() book = Book.objects.create_book("Pride and Prejudice") 我的问题是,为什么前一个方法更喜欢简单地重写基类的create方法: class BookManager(models.Manager): def create(self, title): book = self.model(title=title) # do something with the book book.save() return book class Book(models.Model): …

5
使用两个可选但一个必需的外键创建模型
我的问题是我有一个模型,可以使用两个外键之一来说明它是哪种模型。我希望它至少要拿一个,但不能两个都拿。我可以让它仍然是一个模型还是应该将其分为两种类型。这是代码: class Inspection(models.Model): InspectionID = models.AutoField(primary_key=True, unique=True) GroupID = models.ForeignKey('PartGroup', on_delete=models.CASCADE, null=True, unique=True) SiteID = models.ForeignKey('Site', on_delete=models.CASCADE, null=True, unique=True) @classmethod def create(cls, groupid, siteid): inspection = cls(GroupID = groupid, SiteID = siteid) return inspection def __str__(self): return str(self.InspectionID) class InspectionReport(models.Model): ReportID = models.AutoField(primary_key=True, unique=True) InspectionID = models.ForeignKey('Inspection', on_delete=models.CASCADE, null=True) Date …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.