class SinglePoint(models.Model):
attributes = models.TextField(blank=True)
name = models.CharField(max_length=100)
geom = models.PointField() #Kartenposition
objects = models.GeoManager()
class Connection(models.Model):
name = models.CharField(max_length=100)
#points = models.ManyToManyField(SinglePoint) #OLD
p1 = models.ForeignKey(SinglePoint, related_name='p1_set') #NEW
p2 = models.ForeignKey(SinglePoint, related_name='p2_set') #NEW
obs = models.ManyToManyField(Observation, blank=True)
conds = models.ManyToManyField(Condition, blank=True)
objects = models.GeoManager()
class Meta:
order_with_respect_to = 'p1'
Trong view.py tôi:Howto merge 2 Django queryset trong một và làm một SELECT DISTINCT
...
p1_points = SinglePoint.objects.filter(p1_set__vektordata__order__project__slug=slug)
p2_points = SinglePoint.objects.filter(p2_set__vektordata__order__project__slug=slug)
...
Trước khi tôi chuyển sang ForeignKey, nó làm việc với:
points = SinglePoint.objects.filter(connection__vektordata__order__project__slug=slug)
Cách 'kết hợp' hai QuerySets này với một QuerySet và tạo một khác biệt()?
Cảm ơn!
Tôi muốn để có được tất cả các trường SinglePoint trong dự án của tôi mà không trường SinglePoint đôi (riêng biệt). Đó là không có vấn đề với một ManyToMany-Field, bởi vì sau đó tôi truy cập chúng với .filter (connection__vektordata__ ...). Khác biệt() và bây giờ tôi có hai Filds: .filter (p1_set__vektordata__ ... và .filter (p2_set__vektordata__ ...) –
Xin lỗi, tôi có nghĩa là "Fields" không "Filds" –
results = Q (p1_points) | Q (p2_points) results.children cho tôi [[, ], [, ]] nhưng tôi muốn có [, , , ] để gọi riêng biệt() –