Добавить дополнительную информацию после отправки формы - PullRequest
0 голосов
/ 21 июля 2010

У меня следующая структура:

class FeatureType(models.Model):
    type = models.CharField(max_length=20)

    def __unicode__(self):
        return self.type

class Feature(models.Model):
    name = models.CharField(max_length=50)
    type = models.ForeignKey(FeatureType)
    premium = models.BooleanField("Premium Feature", default=False)

    def __unicode__(self):
       return self.name

То, что я хочу сделать, это когда пользователь добавляет транспортное средство (приложение для инвентаризации транспортных средств), есть большое текстовое поле, которое будет использоваться дляпользователь может получить список функций с другого сайта, скопировав и вставив их туда.

Пока у меня все хорошо, но я не знаю, как это сделать, для каждой функции, анализируемой изтекстовое поле, пользователь сможет установить type, к которой принадлежит эта функция.Вот мой код:

vehicle_form = VehicleForm(request.POST or None)
photos = PhotosFormSet(request.POST or None, request.FILES or None)
features = FeaturesForm(request.POST or None)
if vehicle_form.is_valid() and photos.is_valid() and features.is_valid():
   vehicle = vehicle_form.save(commit=False)
   vehicle.save()
   if features.cleaned_data['external']:
       external_set = features.cleaned_data['external'].split('\r\n')
       for feature in external_set:
           #set featuretype somehow
           vehicle_feature, created = Feature.objects.get_or_create(name=feature
                  , type = featuretype)
           feature = vehicle.features.add(vehicle_feature)
   photos = PhotosFormSet(request.POST, request.FILES, instance=vehicle)
   photos.save()

Итак, как я могу включить выбор типа функции для каждой функции?

В идеале я хочу, чтобы существующие функции были сопоставлены с записью ... для тех функций, которые не существуют, пользователь будет перенаправлен в другое представление, которое позволит ему установитьtype для каждой новой функции и последующего добавления ее в запись.

ОБНОВЛЕНИЕ 1 Я немного изменил код, чтобы он выглядел так:

if features.cleaned_data['external']:
    new_features = []
    external_set = features.cleaned_data['external'].split('\r\n')
    for feature in external_set:
        try:
            vehicle_feature = Feature.objects.get(external_name = feature)
            feature = vehicle.features.add(vehicle_feature)
        except Feature.DoesNotExist:
            new_features.append(feature)

Это заботится о получении существующих функций .... теперь я хочу, чтобы все функции из new_features были переданы в другую форму после того, как пользователь сохранит текущую запись, где пользователь будет вводить дополнительную информацию для каждогоособенность.

1 Ответ

1 голос
/ 21 июля 2010

В вашей FeatureForm вы можете добавить что-то вроде:

feature_type = forms.ChoiceField(label="Feature Type",
                           choices=FeatureType.objects.values_list('id', 'type'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...