Если пользователь и элемент представляют сущность, то для этого у вас должна быть отдельная таблица. Эти таблицы должны использоваться в качестве внешнего ключа в этой таблице.
Для пользователя Django уже имеет auth.User
модель. Таким образом, вам не нужно создавать отдельную таблицу для этого
Для элемента вы можете определить таблицу следующим образом
class Item(models.Model):
name = models.CharField(max_length=100)
Ваша таблица станет такой
class CalorieInfo(models.Model):
user = models.ForeignKey(to='auth.User')
item = models.ForeignKey(to='Item')
calorie_count = models.IntegerField()
Нет необходимости записывать внешние ключи, такие как user_id
или item_id
, так как Django делает это автоматически для внешнего ключа. Когда пользователь будет использовать внешние ключи, Django проверит, существуют ли эти объекты, на которые ссылаются внешние ключи, уже в базе данных.
Ваш взгляд будет выглядеть так
class CalorieView(APIView):
def post(self, request):
data = request.data
for ci in data.get('calorie_info', []):
clinfo, created = CalorieInfo.objects.update_or_create(
user_id=data.get('user_id'),
item=ci.get('itemId'),
defaults={'calorie_count': ci.get('calorie_count')
)
return Response(
{"status": "success"}, status=status.HTTP_201_CREATED)