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

Django, Flask, Bottle, WSGI, CGI…
Antworten
dfint
User
Beiträge: 9
Registriert: Montag 23. April 2018, 14:06

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.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
dfint
User
Beiträge: 9
Registriert: Montag 23. April 2018, 14:06

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?
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Scrapy hat doch gar nichts mit der Datenbank zu tun. Aber was ist denn nun der Unterschied zwischen User und Author?
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten