Дублирование значений id в другом столбце в той же таблице django
Я работаю над одним проектом на python (django framework), в котором у меня есть одна модель пользователя, которая имеет 1000 пользователей. Я хочу сделать еще один столбец с именем priority id и нужно поместить значения id по умолчанию в этот столбец priority id соответственно (вы можете увидеть это ниже).
id | username | priority_id | |
---|---|---|---|
1 | abc | abc@gmail.com | 1 |
2 | xyz | xyz@gmail.com | 2 |
Конечно, я могу сделать это вручную с помощью панели администратора, но для 1000 пользователей это отнимает много времени.
как мне изменить models.py или admin.py или что-то еще, чтобы добиться этого?
def save(self, *args, **kwargs):
self.priority_id = self.id
return super().save(*args, **kwargs)
Я не знаю, зачем вам это нужно, но вы можете добиться этого, добавив BigAutoField в вашу модель пользователя. Это поле будет автоматически увеличивать значения для новых пользователей в соответствии с имеющимися идентификаторами.
В ваших моделях, где вы определяете пользователя, добавьте следующее поле.
priority_id = models.BigAutoField(null=False, unique=True)
ну, я попробовал это с помощью shell и это сработало:
p = Users.objects.all()
for x in p:
profile = Users.objects.get(pk=x.id)
profile.priority_id= x.id
profile.save()
Вы можете использовать это для меня он работает нормально сначала вы должны создать со значением по умолчанию, а затем использовать эту функцию в представлениях и просто вызвать один раз он будет обновлять значение как в id.
def update_value(request):
totaldata = modelsName.objects.all()
for j in totaldata:
modelsName.objects.filter(id=j.id).update(myid=j.id)
return HttpResponse('Success')