У меня нет проблемы с уникальным именем. Вы можете просто указать, что он уникален:
class FurniturePiece(models.Model):
type = models.ForeignKey(FurnitureType)
color = models.ForeignKey(FurnitureColor)
sqft = models.IntegerField()
name = models.CharField(max_length=200, unique=True)
Я не знаю, нужно ли вам узнавать о Django UI или нет. Я полагаю, вам нужно научиться определять модели . Интерфейс администратора - это просто сгенерированный интерфейс, основанный на ваших моделях. Вы можете изменить интерфейс в определенных аспектах, не меняя модели, но кроме этого, есть еще немного информации об интерфейсе администратора.
Я советую вам следовать учебному пособию, подобному djangobook , чтобы хорошо начать с Django.
Я думаю, проблема в том, что вы используете не Django, а в том, что вы вообще не знаете, как моделировать свое приложение.
- Сначала вы должны подумать о том, какие объекты у вас есть (например, Комната, Мебель и т. Д.).
- Тогда подумайте, какие у них отношения.
- После этого вы можете моделировать их в Джанго. Конечно, чтобы сделать это, вы должны знать, как моделировать отношения. Синтаксис может быть специфичным для Django, но логические отношения - нет. Например. отношение «многие ко многим» не является чем-то специфичным для Джанго, это термин, используемый в базах данных для выражения определенных отношений.
Модели Djangos - это просто абстракция дизайна базы данных ниже.
Например, вы указали отношение "многие ко многим" между Room
и FurniturePiece
.
Теперь вопрос: это то, что вы хотите? Это означает, что предмет мебели может принадлежать более чем одной комнате. Это звучит странно. Поэтому, может быть, вы хотите смоделировать, что предмет мебели принадлежит только одной комнате. Но в комнате должно быть несколько предметов мебели. Поэтому мы определяем отношение от FurniturePiece
до Room
.
В Django мы можем выразить это с помощью:
class FurniturePiece(models.Model):
room = models.ForeignKey(Room)
type = models.ForeignKey(FurnitureType)
color = models.ForeignKey(FurnitureColor)
sqft = models.IntegerField()
name = models.CharField(max_length=200)
Возможно, вам следует сначала узнать о реляционных базах данных , чтобы получить основы, прежде чем смоделировать ваше приложение с Django.
Возможно, это не нужно для создания приложения в Django. Но это определенно поможет вам понять, что происходит, для каждого ORM, а не только для Django.