Я пока не очень опытен в Django сигналах.
Я просто хочу, чтобы для каждых 6 новых записей введите в Пользователь , первое сохранение профиля в User_GraduateList автоматически c сохранит в GraduateUser
Таблица Пользователь
таблица User_GraduateList
Я хочу получить результат в Таблице GraduateUser
, поскольку Джо Дио является Первая запись в User_GraduateList
Это мои модели
class User(models.Model):
firstname = models.CharField(max_length=500, null=True,blank=True)
lastname = models.CharField(max_length=500, null=True, blank=True)
middlename = models.CharField(max_length=500, null=True, blank=True)
Email = models.CharField(max_length=500,null=True,blank=True)
Sponsor_User = models.ForeignKey('self', on_delete=models.CASCADE,blank=True, null=True)
class User_GraduateList(models.Model):
User = models.ForeignKey(User, related_name='+', on_delete=models.CASCADE, blank=True)
@receiver(post_save, sender=User)
def create_graduates(sender, instance, created, **kwargs):
sponsor = instance.Sponsor_User
if created and sponsor:
if sponsor.user_set.count() >= 2:
if not User_GraduateList.objects.filter(User=sponsor).exists():
User_GraduateList.objects.create(User=sponsor)
class GraduateUser(models.Model):
User = models.ForeignKey(User_GraduateList, on_delete=models.CASCADE, blank=True)
def __str__(self):
suser = '{0.User}'
return suser.format(self)
@receiver(post_save, sender=User)
def create_graduates(sender, instance, created, **kwargs):
sponsor = instance
if created and sponsor:
print("1")
if sponsor.user_set.count() >= 6:
print("2")
if not GraduateUser.objects.filter(User=sponsor).exists():
print("3")
GraduateUser.objects.create(User=sponsor)
Я не получаю никакой ошибки
ПРИМЕЧАНИЕ: Этот вопрос не совсем похож на мой предыдущий вопрос Django Сигнал post_save ()
ОБНОВЛЕНИЕ
@receiver(post_save, sender=User)
def create_graduates(sender, instance, created, **kwargs):
sponsor = instance
print(instance)
if created and sponsor:
print("1")
if sponsor.user_set.count() >= 6:
print("2")
if not GraduateUser.objects.filter(User=sponsor).exists():
print("3")
GraduateUser.objects.create(User=sponsor)
, когда я пытаюсь вставить данные в таблицу user,
Я получаю в cmd или терминале идентификатор каждого нового участника и 1
>>new entry
>>1
, пожалуйста, прочитайте это, ребята,
, если Пользователь получит 6 новая запись, первый профиль сохраняется в пользователя _GraduateList удалить и сохранить в другую таблицу GraduateUser
разница между Django Сигнал post_save () и этот вопрос: как только система обнаружит, что User.Sponsor_User (иностранный ключ в моделях Пользователь ) уже пригласил 2 пользователей, этот пользователь автоматически сохранит в User_GraduateList
ОБНОВЛЕНИЕ СНОВА
@receiver(post_save, sender=User)
def im_graduate(sender, instance, created, **kwargs):
s = User_GraduateList.objects.filter(id = instance.id).order_by('id')
graduate = instance
if created and graduate:
print(graduate.user_set.count())
if graduate.user_set.count() == 6:
if not GraduateUser.objects.filter(User=s).exists():
GraduateUser.objects.create(User=s)
Я пытаюсь напечатать (Graduate.user_set.count ()), результат всегда >> 0, он не учитывает новую запись, вставленную в таблицу пользователей
Другой пример
для каждой новой записи Вставьте в Таблицу пользователей
>>New Entry 1
>>New Entry 2
>>New Entry 3
>>New Entry 4
>>New Entry 5
>>New Entry 6
, если она достигнет Новая запись 6 первая запись, которая сохраняется в User_GraduateList Table удалить и сохранить в другую таблицу GraduateUser