0

車の数量を更新するフォームを実装する方法は? やり方がわかりません。ありがとう

class Car(models.Model):
    name = models.CharField(max_length=50)
    price = models.DecimalField()    

class GarageCar(models.Model):
    car = models.ForeignKey('Car')
    garage = models.ForeignKey('Garage')
    quantity = models.IntegerField()

class Garage(models.Model):
    name = models.CharField("Garage_Name", max_length=30)
    cars = models.ManyToManyField('Car', through='GarageCar', blank=True, null=True)
    owner = models.ForeignKey(User, related_name='owner_garage', verbose_name='Owner Garage')

このようにして数量を更新します。

In [2]: c = Car.objects.get(id=1) #here I need car ID

In [3]: g = Garage.objects.get(owner=1)

In [4]: q = 33 #here I need data from form

In [5]: c= GarageCar.objects.filter(car=c, garage=g).update(quantity=q)

ビュー:

def show(request):
    user = request.user
    garage = Garage.objects.get(owner=user)

    return render_to_response('garage.html', {'garage': garage, 'form':form})

ガレージ.htmlで:

{% for item in garage.garagecar_set.all %}
        Car:      {{item.car.name}}
        Price:    {{item.car.price}} 
        Quantity: {{item.quantity}} 
        ID:       {{item.car.id}}
{% endfor %}

forms.py で:

from django import forms

class QuantityForm(forms.Form):
    q = forms.IntegerField

数量を更新するORMクエリを作成する方法は?

テンプレートの各車の横にフォーム フィールドを表示する方法 (「更新」ボタン付き)?

4

1 に答える 1

1

FormSets、特に InlineFormSets に興味があるようです。

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view

ばかばかしいほど簡単にしたい場合は (おそらく、すべての仕組みを理解することを犠牲にして)、まさにこのユースケースに私の汎用ビューを使用できます。

私のライブラリ: https://github.com/AndrewIngram/django-extra-views

それで...

ビュー.py:

import extra_views 

class EditProductReviewsView(extra_views.InlineFormSetView):
    model = Garage
    inline_model = GarageCar
    fields = ('quantity', )
    template_name = 'garage.html'

ガレージ.html:

<form action="." method="post">
{% csrf_token %}

{{ formset.management_form }}

<table>
{% for form in formset %}
<tr>
<td>{{ form.instance.car.name }}</td>
<td>{{ form.instance.car.price }}</td>
{% for field in form.visible_fields %}
<td>
{{ field }}
</td>
{% endfor %}
<div style="display: none;">
{% for field in form.hidden_fields %}{{ field }}{% endfor %}
</div>
<td>{{ form.quantity }}</td>
<td>{{ form.instance.car.id }}</td>
</tr>
{% endfor %}
</table>


<input type="submit" />
</form>

fieldsこの例はテストしていません。タプルに id フィールドを追加する必要があるかどうかはわかりません。しかし、基本的な要点は正しいはずです。

于 2012-10-01T14:10:29.030 に答える