Seite 1 von 1

Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Sonntag 30. September 2018, 19:22
von dfint
Ich habe folgende Models:

Code: Alles auswählen

class Author(models.Model):
    	author = models.TextField(blank=True, null=True)
    	user_id = models.IntegerField(blank=True, null=True)
    	registered = models.TextField(blank=True, null=True)
    			
class Posts(models.Model):
	post_id = models.IntegerField(blank=True, null=True)
    	author = models.TextField(blank=True, null=True)
	user_id = models.IntegerField(blank=True, null=True)
    	title = models.TextField(blank=True, null=True) 

Das Model Posts bezieht sich auf das Model Author, allerdings ohne ForeignKey. Besteht eine Möglichkeit zu zählen wie viele Posts zu einem bestimmten Author vorhanden sind, analog zu:

Code: Alles auswählen

post_count = Author.objects.filter(author="XY").set_all().count()

Ich konnte leider keine Möglichkeit finden. Bin über jeden Tipp dankbar.

Re: Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Sonntag 30. September 2018, 19:26
von Sirius3
Was ist ein Author? Und wie steht er zum User mit seiner user_id? Und warum hat ein Post (das ›s‹ ist zu viel) sowohl einen Author (was eigentlich ein Foreignkey mit author_id sein sollte) und eine user_id?

Re: Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Sonntag 30. September 2018, 19:55
von noisefloor
Hallo,

zu Fuss - ja. Aber das macht keinen Sinn, weil die alle Vorteile / Grundkonzepte einer relationalen Datenbank weg wirfst.

Also: Relation festlegen, dann geht das alle so, wie du dir das vorstellt.

Gruß, noisefloor

Re: Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Montag 1. Oktober 2018, 18:32
von dfint
Das Problem ist, dass ich die Daten für die Models mit Scrapy erstellt habe und ich dort keinen ForeignKey setzen kann. Besteht alternativ die Möglichkeit für eine bestehende Datenbank mit Django zu definieren, dass beispielsweise die Spalte user_id des Models Post als ForeignKey mit dem Model Author fungieren soll und den aktuellen Wert (der ja derselbe ist und somit stimmen würde) beibehalten kann?
Oder muss der ForeignKey zwingend immer vor der Erstellung des Wertes in der Spalte bzw. Erstellung der Spalte definiert sein?

Re: Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Montag 1. Oktober 2018, 18:48
von Sirius3
Scrapy hat doch gar nichts mit der Datenbank zu tun. Aber was ist denn nun der Unterschied zwischen User und Author?

Re: Django - Alternative für set_all() für Models ohne ForeignKey

Verfasst: Montag 1. Oktober 2018, 19:54
von noisefloor
Hallo,

da kannst bei Django die Modelle ändern und dann mit Bordmitteln migrieren. ABER: keine Ahnung, wie sich das verhält, wenn man _nachträglich_ Fremdschlüssel einbaut. Habe ich noch nie probiert.

Gruß, noisefloor