【问题标题】:Django, creating multiple identical fields in the same modelDjango,在同一模型中创建多个相同的字段
【发布时间】:2021-06-08 14:44:30
【问题描述】:

我对 Django 完全陌生,如果这是错误的方法,请原谅我。在尝试学习 Django 的同时,我喜欢自己做一些小练习题来巩固我的理解。

使用模型我创建了示例模型对象:

from django.db import models


class Food(models.Model):
    name = models.CharField(
        max_length=50,
        help_text="Name of Fruit or Vegetable"
    )
    food_group = models.CharField(
        max_length=9,


class Vitamins(models.Model):
    name = models.ForeignKey(
        Food,
        on_delete=models.CASCADE
    )
    vitamin_A = models.CharField(
        max_length=20,
    )
    .
    .
    .
    folate = models.CharField(
        max_length=20,
        help_text="Folic Acid"
    )

在我的对象中,我有 5 个相同的字段来存储文本,即(微量、5mg、无信息)。但是,输入每个字段似乎很乏味。有没有更有效的方法来做到这一点?

【问题讨论】:

  • 为什么不为每个维生素的条目创建一个新记录?我的意思是带有食物 (FK)、名称和叶酸的维生素模型?在创建条目时,您只需创建一条新记录。

标签: python django


【解决方案1】:

我认为您应该利用关系数据库并为维生素创建一个模型,包括名称和叶酸,类似于这样

from django.db import models


class Food(models.Model):
    name = models.CharField(
        max_length=50,
        help_text="Name of Fruit or Vegetable"
    )


class Vitamin(models.Model):
    food = models.ForeignKey(
        Food,
        on_delete=models.CASCADE
    )
    name = models.CharField(
        max_length=20,
    )
    folate = models.CharField(
        max_length=20,
        help_text="Folic Acid"
    )

然后为食物中的每一种维生素创建一个记录。它可以是 1、2 或 N。这是非常灵活和可扩展的。

【讨论】:

  • 谢谢!我接受了答案。我意识到我陷入了一种试图将电子表格强加到我的模型中的心态。我认为电子表格中的每一列都需要在对象中拥有自己的字段。而不是仅仅考虑创建我需要的记录并将其与我的对象相关联,这更加灵活。
猜你喜欢
  • 2019-02-13
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 2017-03-19
  • 2011-07-02
  • 2011-08-05
  • 2017-05-07
  • 1970-01-01
相关资源
最近更新 更多