1

ドライバーモデルがあり、ドライバーが多くの車を所有しているとします。QuerySet特定の車を運転しているすべてのドライバーを表示できるように、フィルターを適用できるようにしたいと思います。すなわち:

class Driver(models.Model):
    primary_car = models.ForeignKey(Car, related_name='primary')
    cars = models.ManyToMany(Car, related_name = 'all')

    def save(self, force_insert=False, force_update=False, using=None, *args, **kwargs):
        if self.primary_car not in self.cars.all():
            self.cars.add(self.primary_car)
        super(Car, self).save(force_insert=False, force_update=False, using=None, *args, **kwargs)

class Car(models.Models):
    name = models.CharField(max_length=30)

たとえば、私には50人のドライバーがいて、7人がユーゴスを持っていて、2人がユーゴスをメインカーとして持っていることを知っているとしましょう。これらのドライバーを検索するにはどうすればよいですか?この答えを見つけるのに2分もかからないだろうと思ったので、おそらく基本的なものが欠けています。

save()更新:マングルメソッドを修正しました

4

2 に答える 2

2
from django.db.models import Q

# drivers who have either have a "Yugo" as their primary car,
# or have a relation to one
yugo_drivers = Driver.objects.filter(Q(primary_car__name__iexact="Yugo") | 
                                     Q(cars__name__iexact="Yugo"))

あなたを助ける2つのことは次のとおりです。

于 2013-02-26T18:45:56.007 に答える
0
qs = Driver.objects.filter(Car_name=your_car.name)
于 2013-02-26T18:45:57.103 に答える