2013-05-14 2 views
0

Я действительно сомневаюсь, какой из них использовать (Formset или Inline Formset).Django - Usecases для форм и встроенных форм?

У меня есть запрос на отправку билетов на велосипед. Существует более одного типа велосипедов, и из-за этого у меня есть две модели «DeliveryRequests» и «DeliveryRequestBikes».

class DeliveryRequests(models.Model): 
    pickup_date = models.DateField() 
    return_date = models.DateField() 
    pickup_hour = models.TimeField() 
    return_hour = models.TimeField() 
    name = models.CharField(max_length=100, null=False, blank=False) 
    email = models.EmailField(null=False, blank=False) 
    phone = models.CharField(max_length=25, null=False, blank=False) 
    location_name = models.CharField(max_length=100, null=False, blank=False) 
    address_to_delivery = models.CharField(max_length=200, null=False, blank=False) 
    message = models.TextField(null=True, blank=True) 
    deliveryrequeststatus = models.ForeignKey(DeliveryRequestStatus, null=False, blank=False) 
    comment = models.TextField(null=True, blank=True) 
    date_insert = models.DateTimeField(auto_now_add=True) 
    date_last_modification = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.name 

    class Meta: # To order in the admin by name of the section 
     ordering = ['-id'] 


class DeliveryRequestBikes(models.Model): 
    deliveryrequest = models.ForeignKey(DeliveryRequests, null=False, blank=False) 
    biketype = models.ForeignKey(BikeTypes, null=False, blank=False) 
    units = models.IntegerField(null=False, blank=False) 
    date_insert = models.DateTimeField(auto_now_add=True) 
    date_last_modification = models.DateTimeField(auto_now=True) 

    def __unicode__(self): 
     return self.deliveryrequest 

    class Meta: # To order in the admin by name of the section 
     ordering = ['biketype'] 

Я забыл прямо сказать, что это форма интерфейса. Мне нужно, чтобы иметь возможность вставки для одного «DeliveryRequests» зарегистрировать один или несколько «DeliveryRequestBikes»

Какой я должен использовать, а Formset или Инлайн Formset?

Прошу дать вам несколько советов.

С наилучшими пожеланиями,

ответ

1

Инлайн FormSets представляет собой небольшой слой абстракции поверх модели FormSets. Это упрощает работу с связанными объектами с помощью внешнего ключа.

Кажется, что встроенные формы - это именно то, что вы хотите. Дополнительно вы можете указать, сколько DeliveryRequestBikes вы хотите разрешить для DeliveryRequests.

Дайте им попробовать с:

from django.forms.models import inlineformset_factory 
DeliveryRequestBikesFormSet = inlineformset_factory(DeliveryRequests, DeliveryRequestBikes, fk_name="deliveryrequest") 
+0

Спасибо andrea.ge. –

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