2011-12-24 4 views
2

models.py : 상기 정의 모델일대 다 관계로 새 개체를 만드는 인라인 formset?

class Item(models.Model): 
    name = models.CharField(max_length=50) 

class ItemImage(models.Model): 
    image = models.ImageField(upload_to='item_pics') 
    item = models.ForeignKey(Item, related_name='images') 

, ItemItemImage에 일대 다 관계가있다. 나는 사용자가 새로운 Item 인스턴스를 만들 수있게 해주는 장고 양식과 함께 최대 두 개를 업로드하는 선택을하고있다. ItemImage. Item 및 관련 ItemImage 개체는 같은 단계에서 만들어야합니다.

forms.py : 두 번째 생각에

class ItemForm(ModelForm): 
    img_1 = fields.ImageField() 
    img_2 = fields.ImageField() 

    class Meta: 
     model = Item 
     fields = ('name', 'description', 'circles', 'location', 'rental_fee', 'rental_time_unit', 'deposit', 'rental_rules',) 

대신 ItemForm에 이미지 필드를 추가하는, 나는 ItemImage에 대한 ModelForm을 만들고 인라인을 사용하는 것이 더 나은 방법이 될 수 있습니다 추측하고있다 formset. 필자는 인라인 formset을 사용한 적이 없기 때문에 내 개념은 여전히 ​​모호합니다. 인라인 formset을 사용하는 것이 올바른 시나리오인지 알고 싶습니다.

답변

2

예, 이것은 매우 일반적인 상황으로 ModelFormSet을 사용합니다.

img_1과 img_2가 Item 클래스의 실제 필드 였지만 관련 모델 세트를 처리 할 때 ModelFormSet이 더 적합한 경우 form.py에서 사용 된 접근 방식이 적합합니다.

사용자가 두 이미지가 아닌 세 이미지를 허용하려는 경우를 생각해보십시오. ModelFormSet을 사용하면 문자 코드가 변경됩니다. ItemImage 클래스에 대한 부수적 인 정보를 수집하려면 사소한 변경이 될 수도 있습니다.

+0

내 추측을 확인하고 올바른 경로를 지적 해 주셔서 감사합니다. – tamakisquare

+0

@tamakisquare 어제부터 내 머리를 감싸 주려고 노력 해왔다. 위의 예제가 도움이 될 것입니다! 기본적으로, 모델 formset을 사용하는 방법을 알고 싶습니다. 이미 페이지에서 사용중인 모델 폼과 함께 사용합니다. – Anupam

+0

@Anupam 여기에서 당신을 도울 수 있으면 좋겠지 만, 서버 측 렌더링을 위해 Django를 사용한 지 오래되었습니다. 내 장고 코드는 모두 API 전용입니다. – tamakisquare

관련 문제