2016-12-21 7 views
-1

Попытка получить навыки Django. Я хотел бы, чтобы класс с одним полем умножался. Поэтому у меня может быть больше одного, связанного с моим основным классом, с возможностью быть активным или нет (для будущих потребностей).
Так что мой подкласс будет выглядеть примерно так:Изучение Django - models.py ForeignKey или ManyToManyField или еще?

class Subclass(models.Model): 

    STATUS=(
    ('A', Active), 
    ('U', Unactive) 
) 
    status = modelsCharField(max_length=1, choices=STATUS) 
    name = models.CharField(some options) 

На главном классе я хотел бы назвать его в качестве ссылки, но если я иду:

field=models.ManyToManyField(Subclass) 

Он представлен как вторая таблица и для каждого объекта я должен выбирать из всех его сущностей. Поэтому, если у меня есть 2k сущности в подклассе, я должен прокрутить true все из них, чтобы найти мое соединение (например, по умолчанию для административной страницы)

Я не хочу этого. Все, что мне нужно, это 2 из 2k-объектов, которые подключены и отображаются в admin. И позже, когда те, у которых есть статус Active, будут отображаться на самой странице.

Так что я понял, я должен попробовать ForeignKey соотношение:

field=models.ForeignKey(Subclass, on_delegate=models.CASCADE) 

Это дает мне ошибки о missing default values во время миграции, хотя. Любая помощь будет приветствоваться, так как я немного застрял прямо сейчас.

+0

Что вы на самом деле пытаетесь достичь? В вашем коде также много проблем с опечатками и форматированием. Ваш основной класс (основная модель) должен указывать на несколько записей вашего подкласса (подмодель)? – nmusleh

+0

Это всего лишь примеры, опечатки - это мои вещи. Приходится сражаться с ними все время :(Моя задача состоит в том, чтобы закодировать что-то вроде ... адресной книги? Итак, у вас есть человек и его адрес, а также его старый адрес. Таким образом, основной класс - человек, подкласс - это список адресов. Но мне нужны только те, которые связаны с –

+1

, если у вас есть что-то вроде человека и адреса, у адреса будет ForeignKey (Person), и он установит вас за тем, что вам нужно. Используйте InlineModalAdmin. Вероятно, вы не хотите использовать много для многих в этом случае, поскольку каждый адрес принадлежит одному человеку (вероятно). Пицца и начинка являются примером многих для многих (начинки на разных типах пиццы) https://docs.djangoproject.com/en/1.10/ref/ contrib/admin/# inlinemodeladmin-objects для способа обработки в admin. – AMG

ответ

0

Большое спасибо #AMG. Я сделал это, когда вы заговорили, и теперь это работает. В моей models.py

class Person(models.Model): 
name = models.CharField(max_length=200, default="Name") 
phone = models.CharField(max_length=12, default="+22123456789") 
... 
class Adress(models.Model): 
... 
person = models.ForeignKey(Person, on_delete=models.CASCADE) 
... 

И мой admin.py

from django.contrib import admin 
from .models import Adress 
from .models import Person 

class AdressInline(admin.TabularInline): 
model = Adress 

class PersonAdmin(admin.ModelAdmin): 
inlines = [ 
AdressInline  
] 

admin.site.register(Person, PersonAdmin) 

Это позволяет мне добавить объект Person и добавьте адрес для него на том же месте. Все, что я должен сделать, теперь я формирую списки.

 Смежные вопросы

  • Нет связанных вопросов^_^