【问题标题】:Link between Models in DjangoDjango中模型之间的链接
【发布时间】:2018-07-07 17:44:46
【问题描述】:

我是 Django 新手。我想知道如何链接外键的数据。这是代码。

 class CreateSchool(models.Model):

        schoolName = models.CharField(primary_key=True, max_length=250)

    class SchoolDetails(models.Model):

        createSchool = models.OneToOneField(CreateSchool,to_field='schoolName')

        principalName = models.CharField(max_length=250)

        schoolAddress = models.CharField(max_length=500)

    class kidDetails(models.Model):

        schoolUID = models.ForeignKey(SchoolDetails,to_field='schoolUID')

        childName= models.CharField(max_length=245)

        childUID = models.CharField(max_length=245)   

我的问题是,当我输入孩子的详细信息时,如何存储与 schoolDetails 相关的孩子数据并从 UI 创建学校模型。

当我从管理面板执行此操作时,除非我创建学校和学校详细信息,否则它不允许我保存孩子的数据。

例如,我需要将孩子 A 存储在 1 所学校,而我想将孩子 2 存储在 2 所学校。如何实现这一点。我完全是初学者。任何帮助都会很棒。

【问题讨论】:

    标签: python django database django-models django-forms


    【解决方案1】:

    请看下面的例子:

    class PaymentPlan():
    
      name = models.CharField(max_length=200)
      amount = models.FloatField(null=True)
      discount = models.FloatField(null=True)
      discount_amount = models.FloatField(null=True)
      no_of_users = models.CharField(null=True,max_length=100)
      no_of_brands = models.CharField(null=True,max_length=100)
      no_of_jobs = models.CharField(null=True,max_length=100)
      payment_data = models.CharField(null=True,max_length=100)
      plan_type = models.CharField(null=True,max_length=100)
    
    class AccountSubscriptionDetail():
      plan = models.ForeignKey(PaymentPlan, related_name="plan_data")
      expiry_date = models.DateTimeField(default=timezone.now)
      charge = models.CharField(null=True,blank=True,max_length=100)
      billing_cycle = models.CharField(null=True,blank=True,max_length=100)
      account = models.ForeignKey(Account, related_name="account_sub_data")
    

    在这里,我定义了外键连接到您可以通过这种方式使用的其他模式

    【讨论】:

    • 非常感谢您的回复。当我将数据发送到 AccountSubscriptionDetail() 时,如何在正确的付款计划下保存数据。我可能有 1,2,3,4 个计划。 2.以下如何保存。
    • 只需将其传递给plan_id,如果您发现一些有用的答案,请点赞
    • 假设您已经添加了计划,他们的 id 将是“id”,并且它将是“plan_id”,因为 accountsubscriptiondetail 意味着使用计划表中的 id 作为 accountsubscriptiondetail 中的 plan_id
    • 我已经采纳了你的答案。再告诉我一件事。我如何跟踪所有 ID。我们应该从前端发送吗?我的意思是说我应该在某处预先填充 id 并传递它。如果不是 ID,我可以将学校名称设为主要并通过吗?
    • 是的,如果您想传递学校名称,您必须从某个地方传递一个 id 才能添加与该 id 相关的数据,请在此基础上创建密钥而不是 plan_id 请投票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多