python - 如何在 Django 中将外键设置为默认值?

标签 python django model foreign-keys

我想为多对多关系设置外键,而不必指定 through 字段或(在不影响现有逻辑的情况下指定它)。

监控.py

class QuoteMonitor(g.UserModel):
    quote_services = m. OneToOneField(g.QuoteService)

引用.py

class Quote(g.UserModel):
    name = m.CharField(max_length=512, default='New Quote')
    services = m.ManyToManyField(g.Service, blank=True)

class Service(g.UserModel):
    name = m.CharField(max_length=512, default='New Service')

我现在不能这样做,因为 g.QuoteService 模型不存在。该表由 django 多对多字段自动创建。

这可能吗?

编辑:

question提供了类似的答案。

最佳答案

您可以为 django 自动创建的多对多关系创建一个非托管模型。

class QuoteService(models.Model):
    quote = m.ForeignKey(g.Quote)
    service = m.ForeignKey(g.Service)

    class meta:
        db_table = 'table-name-goes-here'
        managed = False

然后您可以创建一个模型,通过 ForeignKey 或 1-1 字段引用 m2m 关系:

class QuoteMonitor(g.UserModel):
    quote_service = m.OneToOneField(g.QuoteService)

注意:在创建初始模型后,您应该在第二次迁移中创建 QuoteMonitor。

关于python - 如何在 Django 中将外键设置为默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35041637/

相关文章:

python - Yowsup WhatsApp 获取电话号码

Django 测试不会引发 CharField 的完整性错误

Django:防止模型上的查询集删除?

database - 为什么 Django 模型级联删除在现实世界中会失败?

python - pytest模块导入ImportError : No module named

Python PIL 在渲染文本时添加额外的字符

ios - 使用 iOS 和 Django 访问共享数据库

ruby-on-rails - 删除 rails 中的模型( "rails g model Title..."的反面)

python - 获取 mongoengine 中的第一个对象

python - Django ArrayField null=使用 Postgresql 的真正迁移