#python #django
#python #django
Вопрос:
Я новичок в Django, и я пытаюсь построить иерархию данных, которая следует этому шаблону:
Там будет несколько Сообществ — скажем, Huntsville
, Phoenix
и Madison
.
Каждое из этих сообществ сможет иметь несколько отличных друг от друга Categories
. Например, Huntsville
может иметь Hunting
, fishing
и skiing
— и Phoenix
может иметь запущенный, biking
и swimming
. Тогда каждая из конкретных категорий будет иметь несколько различных подробных представлений. Я пытался сделать так, чтобы это произошло с:
from django.db import models
class Community(models.Model):
name = models.CharField(max_length=200) #arbitrary max length
class Category(models.Model):
community = models.ForeignKey(Community)
category = models.CharField(max_length=200) #arbitrary max length
class Detail_View(models.Model):
category = models.ForeignKey(Category)
detailView = models.CharField(max_length=200) #arbitrary max length
website = models.CharField(max_length=200) #arbitrary max length
но, похоже, на самом деле это работает не совсем правильно, и я не могу до конца понять, почему.
Есть мысли?
Ответ №1:
Я не уверен, что полностью понимаю поведение, которого вы ждете, но в любом случае у меня есть несколько советов.
Во-первых, похоже, что вы реализуете соотношение «один ко многим», когда вам действительно нужно соотношение «многие ко многим».
Проверьте http://docs.djangoproject.com/en/1.3/ref/models/relations /
По этой ссылке используйте models.ManyToManyField
вместо models.ForeignKey
Также, если вы хотели определить это как отношение «один ко многим», вы, вероятно, не хотите Category
ссылаться Community
. Используйте фразу «имеет а» или «имеет много», чтобы определить это. Поскольку a Community
«имеет a» Category
, ForeignKey
(или ManyToManyField
) должно быть определено на Community
модели, а не на Category
одной.
Я бы настоятельно рекомендовал взглянуть на свободно доступный проект Django Book, особенно на главу о продвинутых моделях
Надеюсь, это поможет!