Привет всем, кого я хочу запросить manyToManyField
из моей базы данных, похоже, что это не работает. Я хотел бы получить из модели базы данных список всех несовместимостей фреймворка. Но когда я делаю запрос, я ничего от этого не получаю.
Вот мои модели:
class Framework(models.Model):
name = models.CharField(max_length=200)
language = models.ManyToManyField(Language)
version = models.CharField(max_length=20)
typeOfFramework = models.ForeignKey(TypeOfProgram, on_delete=models.CASCADE)
pros = models.ManyToManyField(Pro)
nombreAvantage = models.IntegerField(default = 0)
cons = models.ManyToManyField(Con)
nombreDesavantage = models.IntegerField(default = 0)
additionalInformation = models.ForeignKey(web,blank=True,null=True ,default = None ,on_delete=models.CASCADE)
incompatibility = models.ManyToManyField("self",blank=True)
def __str__(self):
template = '{0.name} {0.version} {0.typeOfFramework} {0.nombreAvantage} {0.nombreDesavantage} {0.additionalInformation}'
return template.format(self)
def getLanguage(self):
return ", ".join([p.name for p in self.language.all()])
def getPros(self):
return ", ".join([p.advantage for p in self.pros.all()])
def getCons(self):
return ", ".join([p.disadvantage for p in self.cons.all()])
def getIncompatibility(self):
return ", ".join([(p.name + ' '+ p.version) for p in self.incompatibility.all()])
def __iter__(self):
return [ self.name,
self.language,
self.version,
self.typeOfFramework,
self.pros,
self.cons,
self.additionalInformation
]
class DataPro(models.Model):
advantage = models.CharField(max_length=200)
def __str__(self):
template = '{0.advantage}'
return template.format(self)
class DataCon(models.Model):
disadvantage = models.CharField(max_length=200)
def __str__(self):
template = '{0.disadvantage}'
return template.format(self)
class Database(models.Model):
name = models.CharField(max_length=200)
version = models.CharField(max_length=20)
pros = models.ManyToManyField(DataPro)
nombreAvantage = models.IntegerField(default = 0)
cons = models.ManyToManyField(DataCon)
nombreDesavantage = models.IntegerField(default = 0)
frameworkIncompatibility = models.ManyToManyField(Framework, blank=True)
def __str__(self):
template = '{0.name} {0.version} {0.nombreAvantage} {0.nombreDesavantage}'
return template.format(self)
def getDataPros(self):
return ", ".join([p.advantage for p in self.pros.all()])
def getDataCons(self):
return ", ".join([p.disadvantage for p in self.cons.all()])
def getFrameworkIncompatibility(self):
return ", ".join([p.name + " "+ p.version for p in self.frameworkIncompatibility.all()])
И вот представление, где я хочу получить список
listOfDatabase = Database.objects.values_list()
databaseIncompatibility = []
for s in listOfDatabase:
databaseIncompatibility.append(s.objects.filter(frameworkIncompatibility__in=Framework.objects.all()))
listDatabase = [(q[0],q[1],q[2],q[3],q[4])for q in listOfDatabase]
#ID, name, version, con, pro
Извините, если это глупый вопрос, это мой первый django
проект, и я немного растерялся, как что-то делать.
Спасибо всем за ответы.