У меня проблема с Django и особенно с использованием DidNotExist.
В моем скрипте я пытаюсь проверить, существует объект "Scrapper" или нет, если он не существует объект создан.
Для проверки, существует ли он или нет, я использую 'try catch Model.DoesNotExists', .get () с двумя параметрами: первый - это идентификаторы, а последний - объект User. .
Проблема возникает, когда два объекта Scrapper имеют одинаковые идентификаторы, но разных пользователей, создается первый «Scrapper», а второй стирает первый.
try:
a = Scrapper.objects.get(id_lbc=ids, user=user)
except Scrapper.DoesNotExist:
a = Scrapper(
id_lbc=ids,
lbc_name=title,
lbc_url=url,
lbc_image=image,
lbc_price=price,
lbc_date=date,
lbc_city=city,
lbc_price_meter=price_meter,
user=user,
token_url=token,
customer=customer,
has_phone=phone,
)
a.save()
Model
class Scrapper(models.Model):
id_lbc = models.IntegerField(primary_key=True)
lbc_name = models.CharField(max_length=300)
lbc_url = models.URLField(max_length=300)
lbc_image = models.URLField(
max_length=300, default='http://****/****/nothing.jpg')
lbc_price = models.IntegerField(blank=True, null=True)
lbc_price_meter = models.IntegerField(blank=True, null=True)
lbc_city = models.CharField(max_length=300)
lbc_date = models.DateTimeField(auto_now=False)
user = models.ForeignKey(User, on_delete=models.CASCADE)
token_url = models.ForeignKey(
Url_lbc, to_field='token', on_delete=models.CASCADE)
is_emailed = models.BooleanField(default=False)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
has_phone = models.BooleanField(default=False)
def __str__(self):
return self.lbc_name
Я хочу создать два объекта Scrapper с одинаковыми идентификаторами, но разными пользователями, например
Scrapper N ° 1
идентификаторы = 1234567
user = Nico (объект )
Scrapper N ° 2
id = 1234567
user = Paul (object)
Я думал, что с учетом заданного объекта User запрос Django может увидеть разницу между два объекта Scrapper, но я что-то неправильно понял ... может быть, PK в моей модели?
Спасибо за помощь