你如何决定在 django 中创建一个新模型还是一个字段?

Ksi*_*esh 3 django

我正在为我的新 django 网站创建一个用户配置文件类,并且我正在尝试决定如何在我的模型中表示用户的物理地址。

创建模型的新子类并使用 OneToOne 键引用它是否是更好的做法

class UserProfile(models.Model):
    ...
   address = models.OneToOneField(AddressModel)
    ...
class AddressModel(models.Model)
    street_address = models.CharField(max_length=30)
    city = models.CharField(max_length=15)
     ....
Run Code Online (Sandbox Code Playgroud)

或者最好创建一个新的地址字段,例如

class UserProfile(models.Model):
     ...
    address = AddressField(location_dict)
     ...
class AddressField(models.Field)
    # details go here
    ...
Run Code Online (Sandbox Code Playgroud)

Eli*_*ght 7

我通常发现,如果条目可以独立创建,那么拥有单独的模型很有用。例如,如果您最终可能会得到一组地址和一组用户,但并非所有这些都会立即链接,那么我会将它们分开。

但是,如果数据库中的所有地址始终立即与用户关联,我只需向模型添加一个新字段即可。

注意:有些人会告诉您,拥有可为空的数据库列是错误和邪恶的,因此如果您的任何地址将是 ,您应该拥有一个单独的模型None。我不同意; 虽然通常有很多理由避免可空列,但在这种情况下,我认为检查空地址的不便并不比检查一对一模型条目是否存在更繁重。