Как можно удалить название города и обновить название общества и сохранить это в базе данных?
Я хочу знать, как я могу удалить название города из названия общества, обновить название общества и сохранить его в базе данных?
Нижеприведенный код берет все названия обществ, которые содержат название города. но я хочу обновить все названия обществ и сохранить их.
qs = Society.objects.all()
citys = City.objects.values_list('name', flat=True)
clauses = (Q(name__iendswith=name) for name in citys)
query = reduce(operator.or_, clauses)
data = qs.filter(query)
Спасибо!!!
1)Я советую вам использовать мой первый комментарий в вашем вопросе, лучше иметь foreignkey для города
.
2)Вот как вы можете добиться этого без иностранного ключа.
qs = Society.objects.all()
citys = City.objects.values_list('name', flat=True)
clauses = (Q(name__iendswith=name) for name in citys)
query = reduce(operator.or_, clauses)
datas = qs.filter(query)
for data in datas:
name = data.name
new_name = " ".join(name.split()[:-1])
data.name = new_name
data.save()
это поможет, но на самом деле это не очень хороший подход, вот почему:
Допустим, у вас есть название компании google paris, тогда new_name будет google, но давайте
предположим, что у вас есть google new york city, тогда new_name будет google new york
это не совсем то, что вы хотите.
Чтобы это работало, я советую вам добавить # перед добавлением названия города что-то вроде
google # paris тогда ответ будет
qs = Society.objects.all()
citys = City.objects.values_list('name', flat=True)
clauses = (Q(name__iendswith=name) for name in citys)
query = reduce(operator.or_, clauses)
datas = qs.filter(query)
for data in datas:
name = data.name
new_name = name.split('#')[0]
data.name = new_name
data.save()
Это просто идея, как вы можете этого достичь.