Как скрыть «value» поля поля «ForeignKey» по условию «авторизованный пользователь»?

Чтобы скрыть значение поля ForeignKey на основе условия авторизованного пользователя в Django, вы можете использовать функционал Django Forms и атрибут disabled в HTML. Вот пошаговая инструкция о том, как это сделать:

1. Создайте форму для модели, которая содержит ForeignKey поле. Допустим, у вас есть модель MyModel с ForeignKey полем my_field:

from django import forms
from .models import MyModel

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['my_field']

2. В шаблоне, где вы отображаете форму, вставьте следующий код:

<form method="post" action="{% url 'your_view_name' %}">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

3. Создайте представление, которое будет отображать форму:

from django.shortcuts import render, redirect
from .forms import MyModelForm

def your_view(request):
    if request.user.is_authenticated: # Проверяем, является ли пользователь авторизованным
        form = MyModelForm(request.POST or None)
    else:
        form = MyModelForm(request.POST or None, disabled=True) # Передаем аргумент disabled=True в форму

    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return redirect('your_success_url')

    context = {'form': form}
    return render(request, 'your_template.html', context)

4. Обновите urls.py, чтобы привязать ваше представление к URL:

from django.urls import path
from .views import your_view

urlpatterns = [
    path('your_url/', your_view, name='your_view_name'),
]

Теперь, если пользователь авторизован, поле ForeignKey будет включено в форму и можно будет выбрать значение. Если пользователь не авторизован, поле будет отключено и нельзя будет выбрать значение. Обратите внимание, что это решение отключает только поле в HTML, а не валидацию и сохранение значений на сервере. Если вам нужно дополнительное исключение значения ForeignKey из валидации и сохранения, вам потребуется дополнительная логика в представлении.